home *** CD-ROM | disk | FTP | other *** search
- package com.extensibility.xa;
-
- import com.extensibility.rock.diagram.DiagramDataModel;
- import com.extensibility.rock.diagram.DiagramDataNode;
- import com.extensibility.xml.ContentModel;
- import com.extensibility.xml.ContentModelTerm;
- import com.extensibility.xml.ContentModelTermEnum;
- import com.extensibility.xml.DeclarationChangeEvent;
- import com.extensibility.xml.ElementDeclaration;
- import java.util.Enumeration;
- import java.util.EventObject;
-
- public final class ElementDiagramModel extends DiagramDataModel implements SchemaDocListener {
- SchemaDoc doc;
-
- SchemaDoc getSchemaDoc() {
- return this.doc;
- }
-
- void handleDeclChange(DeclarationChangeEvent var1) {
- if (((EventObject)var1).getSource() instanceof ElementDeclaration) {
- ElementDeclaration var2 = (ElementDeclaration)((EventObject)var1).getSource();
- if (var1.getWhich() != 31 && var1.getWhich() != 21 && var1.getWhich() != 22 && var1.getWhich() != 35) {
- if (var1.getWhich() == 1) {
- ((DiagramDataModel)this).fireDiagramModelEvent(5);
- } else if (var1.getWhich() == 26) {
- ((DiagramDataModel)this).updateConnector((ContentModelTerm)((EventObject)var1).getSource(), ((ContentModelTerm)((EventObject)var1).getSource()).getChildConnection());
- ((DiagramDataModel)this).fireDiagramModelEvent(6);
- }
- } else {
- this.updateRoot(var2);
- }
-
- }
- }
-
- public ElementDiagramModel(SchemaDoc var1) {
- this.doc = var1;
- ((DiagramDataModel)this).init();
- this.doc.addDocumentListener(this);
- }
-
- protected Enumeration getRoots() {
- return this.doc.getElementDeclarations();
- }
-
- public void updateRoot(Object var1) {
- super.updateRoot(var1);
- ElementDeclaration var2 = (ElementDeclaration)var1;
- Enumeration var3 = ((DiagramDataModel)this).getRootNodes();
-
- while(var3.hasMoreElements()) {
- DiagramElementNode var4 = (DiagramElementNode)var3.nextElement();
- ElementDeclaration var5 = var4.getSourceElement();
- if (var5 != null && var5.getSuperType() != null && var5.getSuperType().getTargetObj() == var2) {
- this.updateRoot(var5);
- }
- }
-
- }
-
- public String getRootName(Object var1) {
- return ((ElementDeclaration)var1).getName();
- }
-
- public char getRootConnector(Object var1) {
- ContentModel var2 = ((ElementDeclaration)var1).getEffectiveModel();
- return ((ContentModelTerm)var2).isGroup() ? ((ContentModelTerm)var2).getChildConnection() : '\u0000';
- }
-
- protected void createChildNodes(DiagramDataNode var1, Object var2) {
- ElementDeclaration var3 = (ElementDeclaration)var2;
- ContentModel var4 = var3.getEffectiveModel();
- if (!var4.isAny() && !var4.isEmpty()) {
- if (var4.getRootGroup() != null) {
- this.createChildNodes((ElementDeclaration)var2, (DiagramXANode)var1, var4.getRootGroup(), true);
- } else {
- this.createChildNodes((ElementDeclaration)var2, (DiagramXANode)var1, var4, true);
- }
- }
-
- }
-
- protected void createChildNodes(ElementDeclaration var1, DiagramXANode var2, ContentModelTerm var3, boolean var4) {
- DiagramXANode var5 = null;
- if (!var3.isPCDATATerm()) {
- if (var3.isGroup()) {
- DiagramXANode var6 = var2;
- if (!var4 || var3.getOccurance() != 0) {
- var5 = (DiagramXANode)this.createDiagramDataNode(var3, var2, var3.getChildConnection(), var3.getOccuranceAsString(true, true, true));
- var6 = var5;
- }
-
- ContentModelTermEnum var7 = var3.getTerms(true);
-
- while(var7.hasMoreElements()) {
- this.createChildNodes(var1, var6, var7.nextContentModelTerm(), false);
- }
- } else {
- var5 = (DiagramXANode)this.createDiagramDataNode(var3, var2, var3.getConnection(), var3.getOccuranceAsString(true, true, true));
- }
-
- if (var5 != null && var3.getOwner() != var1) {
- var5.setForeign(true);
- }
-
- }
- }
-
- protected DiagramDataNode createDiagramDataNode(Object var1, DiagramDataNode var2, char var3, String var4) {
- Object var5 = null;
- if (var1 instanceof ContentModelTerm) {
- ContentModelTerm var6 = (ContentModelTerm)var1;
- if (var6.isGroup()) {
- var5 = new DiagramTermNode(this, (DiagramXANode)var2, var6, var3, var4);
- } else {
- var5 = new DiagramTypeNode(this.doc, this, (DiagramXANode)var2, var6.getTermRef(), var3, var4);
- }
-
- if (var6.getLocalTag() != null) {
- ((DiagramXANode)var5).setLocalTag(var6.getLocalTag());
- }
- } else if (var1 instanceof ElementDeclaration) {
- var5 = new DiagramElementNode(this, (DiagramXANode)var2, (ElementDeclaration)var1, var3, var4);
- }
-
- return (DiagramDataNode)var5;
- }
-
- public void flavorChanged(SchemaDocEvent var1) {
- }
-
- public void declarationRemoved(SchemaDocEvent var1) {
- if (var1.getDeclaration() instanceof ElementDeclaration) {
- ((DiagramDataModel)this).rootRemoved(var1.getDeclaration());
- }
-
- }
-
- public void declarationInserted(SchemaDocEvent var1) {
- if (var1.getDeclaration() instanceof ElementDeclaration) {
- ((DiagramDataModel)this).rootInserted(var1.getDeclaration());
- }
-
- }
-
- public void declarationListChanged(SchemaDocEvent var1) {
- ((DiagramDataModel)this).rootListChanged();
- }
-
- public void declarationListReordered(SchemaDocEvent var1) {
- }
-
- public void declarationChanged(SchemaDocEvent var1, DeclarationChangeEvent var2) {
- this.handleDeclChange(var2);
- }
-
- protected DiagramDataNode getRootNode(Object var1) {
- DiagramDataNode var2 = super.getRootNode(var1);
- if (var2 == null && var1 != null && var1 instanceof ElementDeclaration) {
- ((DiagramDataModel)this).createRoot(var1);
- return super.getRootNode(var1);
- } else {
- return var2;
- }
- }
- }
-